জাভাতে Type Inference এমন একটি প্রক্রিয়া যেখানে কম্পাইলার স্বয়ংক্রিয়ভাবে একটি জেনেরিক টাইপ নির্ধারণ করে। এটি কোড সরল এবং আরও পড়তে সুবিধাজনক করে তোলে। জাভার জেনেরিক্সের সাহায্যে Type Inference বিশেষত জেনেরিক মেথড এবং কনস্ট্রাক্টর ব্যবহার করার সময় কার্যকর।
Type Inference কীভাবে কাজ করে?
- জেনেরিক মেথড বা কনস্ট্রাক্টর ডাকার সময় টাইপ প্যারামিটার সরাসরি উল্লেখ করার প্রয়োজন হয় না।
- কম্পাইলার context থেকে টাইপ অনুমান করতে পারে।
উদাহরণ: Type Inference ছাড়া
import java.util.List;
import java.util.ArrayList;
public class WithoutTypeInference {
public static void main(String[] args) {
List<String> list = new ArrayList<String>(); // Explicit type declaration
list.add("Hello");
list.add("World");
for (String s : list) {
System.out.println(s);
}
}
}
উদাহরণ: Type Inference সহ
import java.util.List;
import java.util.ArrayList;
public class WithTypeInference {
public static void main(String[] args) {
List<String> list = new ArrayList<>(); // Type inference
list.add("Hello");
list.add("World");
for (String s : list) {
System.out.println(s);
}
}
}
উপকারিতা:
- টাইপ পুনরাবৃত্তি করার প্রয়োজন নেই, যা কোড সরল করে।
- কম কোড, একই কার্যকারিতা।
Type Inference এবং Generics মেথড
জেনেরিক মেথড ব্যবহার করার সময় টাইপ প্যারামিটার উল্লেখ না করেও Type Inference এর মাধ্যমে কোড সরল করা যায়।
উদাহরণ: Type Inference সহ Generic Method
import java.util.List;
import java.util.ArrayList;
public class GenericMethodExample {
public static <T> void addToList(List<T> list, T item) {
list.add(item);
}
public static void main(String[] args) {
List<String> stringList = new ArrayList<>();
addToList(stringList, "Java"); // Type inference for T
addToList(stringList, "Generics");
System.out.println(stringList);
}
}
আউটপুট:
[Java, Generics]
Type Inference এবং Diamond Operator
জাভা 7 থেকে Diamond Operator (<>) যুক্ত হওয়ার ফলে Type Inference আরও সহজ হয়েছে।
উদাহরণ: Diamond Operator সহ Type Inference
import java.util.Map;
import java.util.HashMap;
public class DiamondOperatorExample {
public static void main(String[] args) {
// Without Type Inference
Map<String, Integer> map1 = new HashMap<String, Integer>();
// With Type Inference
Map<String, Integer> map2 = new HashMap<>();
map2.put("Java", 1);
map2.put("Generics", 2);
System.out.println(map2);
}
}
আউটপুট:
{Java=1, Generics=2}
Type Inference এবং Method References
জাভা 8 এর পরে, Lambda Expressions এবং Method References ব্যবহার করার সময়ও Type Inference কার্যকর ভূমিকা পালন করে।
উদাহরণ: Lambda Expression এবং Type Inference
import java.util.Arrays;
import java.util.List;
public class LambdaExample {
public static void main(String[] args) {
List<String> list = Arrays.asList("Java", "Generics", "Type Inference");
// Type inference in lambda
list.forEach(item -> System.out.println(item));
}
}
উদাহরণ: Method References এবং Type Inference
import java.util.Arrays;
import java.util.List;
public class MethodReferenceExample {
public static void main(String[] args) {
List<String> list = Arrays.asList("Java", "Generics", "Type Inference");
// Type inference with method reference
list.forEach(System.out::println);
}
}
Type Inference এবং Stream API
জাভা 8 থেকে Stream API তে Type Inference একটি গুরুত্বপূর্ণ ভূমিকা পালন করে।
উদাহরণ: Stream API এবং Type Inference
import java.util.Arrays;
import java.util.List;
public class StreamExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
// Type inference in streams
int sum = numbers.stream()
.filter(num -> num % 2 == 0) // Lambda with type inference
.mapToInt(num -> num)
.sum();
System.out.println("Sum of even numbers: " + sum);
}
}
আউটপুট:
Sum of even numbers: 6
Type Inference এর সুবিধা
- কোড সরলীকরণ: টাইপ স্পষ্টভাবে উল্লেখ না করেও জাভা কম্পাইলার টাইপ নির্ধারণ করে।
- পাঠযোগ্যতা বৃদ্ধি: কোড ছোট এবং সহজবোধ্য হয়।
- বাগ কমায়: টাইপ ভুল উল্লেখ করার ঝুঁকি কমে যায়।
- উৎপাদনশীলতা বৃদ্ধি: টাইপ উল্লেখ করার প্রয়োজনীয়তা কমে যাওয়ায় দ্রুত কোড লেখা যায়।
জাভার জেনেরিক্সে Type Inference টাইপ নির্ধারণের প্রক্রিয়াকে সহজ করে। এটি প্রোগ্রামারদের কম কোড লিখে আরও কার্যকর এবং টাইপ সেফ প্রোগ্রাম তৈরি করতে সাহায্য করে। Diamond Operator, Lambda Expressions, এবং Stream API Type Inference কে আরও কার্যকর করেছে।
Read more